var status = -1;

function start() {
    action(1, 0, 0)
}
var question = ["在第 1 层，你击杀了多少只绿水灵？", "在第 4 层，你破坏了几次平衡？", "在第 6 层，你击杀了多少只怪物？", "在第 8 层，你击杀了多少只怪物？", "在第 9 层，你失败了多少次？", "在第 11 层，你击杀了多少只怪物？", "在第 13 层，你击杀了多少只怪物？", "在第 16 层，你击杀了多少只怪物？", "在第 21 层，你击杀了多少只怪物？", "在第 23 层，你失败了多少次？", "在第 26 层，你击杀了多少只怪物？", "在第 31 层，你击杀了多少只怪物？", "在第 31 层，你遇到了几只精灵？", "在第 31 层，你惹恼了几只精灵？", "在第 32 层，你击杀了多少只怪物？", "在第 33 层，你总共进行了几次传送？", "在第 39 层，你总共回答了几次问题？", "在第 39 层，你总共答错了几次问题？"];
var answer = ["stage1_kill", "stage4_unbalanced", "stage6_kill", "stage9_fail", "stage11_kill", "stage13_kill", "stage16_kill", "stage21_kill", "stage23_fail", "stage26_kill", "stage31_kill", "stage31_fairy_summon", "stage31_angry", "stage32_kill", "stage32_teleport", "stage39_total", "stage39_wrong"];
var number = 0;

function action(d, c, b) {
    status++;
    var a = cm.getEventManager("副本_起源之塔");
    if ("clear".equals(a.getProperty("stage43"))) {
        actionEnd(d, c, b, a)
    } else {
        if ("fight".equals(a.getProperty("stage43"))) {
            action2(d, c, b, a)
        } else {
            if ("ask".equals(a.getProperty("stage43"))) {
                action1(d, c, b, a)
            } else {
                action0(d, c, b, a)
            }
        }
    }
}

function action0(d, c, b, a) {
    if (status < 0) {
        cm.dispose()
    } else {
        if (status === 0) {
            cm.sendNext("想要通过这一层的话，必须要通过探险的考验。只有答对我的5道问题，才能允许你前往下一层。")
        } else {
            if (status === 1) {
                cm.sendNext("测试内容将以你目前为止探索的起源之塔的记录为基础进行。一旦答错，你就要去打猎下方的怪物，然后才能继续考验。")
            } else {
                if (status === 2) {
                    cm.sendOk("准备好了的话，就跟我说一声吧。")
                } else {
                    if (status === 3) {
                        a.setProperty("stage43", "ask");
                        cm.dispose()
                    } else {
                        cm.dispose()
                    }
                }
            }
        }
    }
}

function action1(b, e, g, a) {
    if (status < 0) {
        cm.dispose()
    } else {
        if (status === 0) {
            var d = parseInt(a.getProperty("stage43_count")) + 1;
            a.setProperty("stage43_count", d);
            var i = "那么，这是第" + d + "次测试。\r\n";
            i += "#h #，你这次来到起源之塔探险时，发生的事情中……\r\n\r\n";
            number = randomNum(0, question.length - 1);
            i += "#b" + question[number] + "\r\n";
            i += "#r#e填写回答的答案。";
            cm.askText(i)
        } else {
            if (status === 1) {
                var f = cm.getText();
                var c = a.getProperty(answer[number]);
                if (f.equals(c)) {
                    var h = parseInt(a.getProperty("stage43_right")) + 1;
                    a.setProperty("stage43_right", h);
                    if (h == 5) {
                        a.setProperty("stage43", "clear");
                        cm.fieldEffect_ScreenMsg("UI/UIWindowPL.img/HiddenCatch/StageImg/clear");
                        cm.sendOk("回答正确！你已经达到了考验的要求。通往下一层的门给你打开了。");
                        cm.getMap().getWeatherEffectNotice("你居然通过了弗雷塔的测试，挺厉害的嘛？赶快前往第44层吧。", 147, 30000, 1)
                    } else {
                        cm.sendOk("回答正确！你已经答对 #r#e" + h + " #k#n道题了。准备好了的话，就继续下一个问题吧。")
                    }
                } else {
                    var d = parseInt(a.getProperty("stage43_count"));
                    cm.sendOk("回答错误！正确答案是：#r#e" + c + "\r\n\r\n#k#n作为惩罚，你必须要去狩猎" + d * 10 + "只怪物才能再次回答问题！");
                    cm.getMap().getWeatherEffectNotice("回答错误！作为惩罚，你必须要去狩猎" + d * 10 + "只怪物才能再次回答问题！", 148, 30000, 1);
                    a.setProperty("stage43", "fight");
                    a.setProperty("stage43_kill", 0)
                }
                cm.dispose()
            } else {
                cm.dispose()
            }
        }
    }
}

function action2(e, c, b, a) {
    var d = parseInt(a.getProperty("stage43_count"));
    cm.sendOk("你对自己的探险过程居然都不放在心上啊。作为惩罚，你必须要去狩猎" + d * 10 + "只怪物才能再次回答问题！");
    cm.dispose()
}

function actionEnd(d, c, b, a) {
    cm.sendOk("你已经通过了我的考验。向更深处进发吧。");
    cm.dispose()
}

function randomNum(b, a) {
    switch (arguments.length) {
        case 1:
            return parseInt(Math.random() * b + 1, 10);
            break;
        case 2:
            return parseInt(Math.random() * (a - b + 1) + b, 10);
            break;
        default:
            return 0;
            break
    }
};